/**
 *  Autor：厉高歌
 */
package com.ymatou.iapi.brand.testcase;


import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.json.JSONObject;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.experimental.categories.Category;

import com.google.gson.JsonObject;
import com.ymatou.iapi.brand.service.AddProductBrandCall;
import com.ymatou.iapi.brand.service.ModifyProductBrandCall;
import com.ymt.core.tool.Logger;
import com.ymt.utils.annotation.TestCase;
import com.ymt.utils.annotation.TestSuite;
import com.ymt.utils.tag.P1;
import com.ymttest.database.mongo.ProductBrandInfoWapper;
import com.ymttest.database.sqlwapper.YmtProductBrandWapper;
import com.ymttest.utils.YMTDateUtil;
@TestSuite
public class Ts_ModifyProductBrand {
	private static String dateformat = "MM-dd HH:mm:ss";
	
	@BeforeClass
	public static void setUp() {
		Logger.createResultFile("添加标准品牌信息");
	}

	@Before
	public void caseUp() {
	}

	@AfterClass
	public static void tearDown() {
		Logger.generateResult(new ModifyProductBrandCall().getOpurl());
	}
	
	@After
	public void caseDown() {
		Logger.end();
	}

	/**
	  * 所有信息正常修改，验证数据落地
	*/
	@Test
	@Category({P1.class})
	@TestCase
	public void Tc_ModifyProductBrand_001(){
		
		Logger.start(true,"所有信息正常修改，验证数据落地");
		try{
			
			//指定要修改的参数
			Map<String, Object> mm=new HashMap<String,Object>();
			mm.put("KeyWord", "Lgg");
			mm.put("BrandName", "阿迪达斯"+YMTDateUtil.getSysTime(dateformat));
			mm.put("BrandEnName", "Adidas"+YMTDateUtil.getSysTime(dateformat));
			mm.put("BrandDescription", "这是品牌描述信息"+YMTDateUtil.getSysTime(dateformat));
			mm.put("Operator", "Lgg");
			mm.put("BrandLogoUrl", "http://www.ymatou.com/BrandLogoUrl/"+YMTDateUtil.getSysTime(dateformat)+".jpg");		
			mm.put("BrandBannerUrl", "http://www.ymatou.com/BrandBannerUrl/"+YMTDateUtil.getSysTime(dateformat)+".jpg");	
			//添加一个品牌
			Integer ReturnBrandId=AddProductBrandCall.callAndGetBrandId(mm);
			//修改品牌
			Map<String, Object> mm2=new HashMap<String,Object>();
			mm2.put("BrandId", ReturnBrandId);
			mm2.put("KeyWord", "M_Lgg");
			mm2.put("BrandName", "M_阿迪达斯"+YMTDateUtil.getSysTime(dateformat));
			mm2.put("BrandEnName", "M_Adidas"+YMTDateUtil.getSysTime(dateformat));
			mm2.put("BrandDescription", "M_这是品牌描述信息"+YMTDateUtil.getSysTime(dateformat));
			mm2.put("Operator", "M_Lgg");
			mm2.put("BrandLogoUrl", "M_http://www.ymatou.com/BrandLogoUrl/"+YMTDateUtil.getSysTime(dateformat)+".jpg");	
			mm2.put("BrandBannerUrl", "M_http://www.ymatou.com/BrandBannerUrl/"+YMTDateUtil.getSysTime(dateformat)+".jpg");	
			JSONObject ret=new ModifyProductBrandCall().callAndGetReturnData(mm2);
			//响应断言
			Logger.verifyEquals(200, ret.get("Code"), "返回值为200");
			Logger.verifyEquals("操作成功", ret.get("Msg"), "响应信息返回值Msg为：操作成功");
			//查询SQL数据
			YmtProductBrandWapper ymtProductBrandWapper=new YmtProductBrandWapper();
			List <Map>sqlRet= ymtProductBrandWapper.getProductBrandByBrandId(ReturnBrandId);
			Logger.verifyNotNull(sqlRet, "根据添加返回的品牌ID可以查询到品牌数据");	
			Logger.verifyEquals(mm2.get("KeyWord"), sqlRet.get(0).get("sKey"), "标准品牌关键字KeyWord，SQL落地验证 ");
			Logger.verifyEquals(mm2.get("BrandName"), sqlRet.get(0).get("sBrand"), "标准品牌中文名sBrand，SQL落地验证 ");
			Logger.verifyEquals(mm2.get("BrandEnName"), sqlRet.get(0).get("sBrandEn"), "标准品牌英文名BrandEnName，SQL落地验证 ");
			Logger.verifyEquals(mm2.get("BrandDescription"), sqlRet.get(0).get("mBrandDescript"), "标准品牌描述信息BrandDescription，SQL落地验证 ");
			Logger.verifyEquals(mm2.get("Operator"), sqlRet.get(0).get("sOperator"), "标准品牌操作人Operator，SQL落地验证 ");
			Logger.verifyEquals(mm2.get("BrandLogoUrl"), sqlRet.get(0).get("sLogoUrl"), "标准品牌品牌Logo图BrandLogoUrl，SQL落地验证 ");
			Logger.verifyEquals(mm2.get("BrandBannerUrl"), sqlRet.get(0).get("sBannerUrl"), "标准品牌品牌Logo图BrandBannerUrl，SQL落地验证 ");
			
			//查询Mongo数据落地
			ProductBrandInfoWapper productBrandInfoWapper=new ProductBrandInfoWapper();
			List <Map> mogRet=productBrandInfoWapper.getProductBrandInfoByBrandId(ReturnBrandId);
			Logger.verifyEquals(mm2.get("KeyWord"), (mogRet.get(0)).get("KeyWord"), "标准品牌关键字KeyWord，Mongo落地验证");
			Logger.verifyEquals(mm2.get("BrandName"), mogRet.get(0).get("BrandName"), "标准品牌中文名BrandName，Mongo落地验证");
			Logger.verifyEquals(mm2.get("BrandEnName"), mogRet.get(0).get("BrandEnName"), "标准品牌英文名BrandEnName，Mongo落地验证");
			Logger.verifyEquals(mm2.get("BrandDescription"), mogRet.get(0).get("BrandDescription"), "标准品牌描述信息BrandDescription，Mongo落地验证");
			Logger.verifyEquals(mm2.get("Operator"), mogRet.get(0).get("AddUser"), "标准品牌操作人Operator，Mongo落地验证");
			Logger.verifyEquals(mm2.get("BrandLogoUrl"), mogRet.get(0).get("BrandLogoUrl"), "标准品牌品牌Logo图BrandLogoUrl，Mongo落地验证");
			Logger.verifyEquals(mm2.get("BrandBannerUrl"), mogRet.get(0).get("BrandBannerUrl"), "标准品牌品牌Logo图BrandBannerUrl，Mongo落地验证");
			//非传入数据落地验证，默认值验证
			Logger.verifyEquals(0, mogRet.get(0).get("Action"), "标准品牌新增记录Aciton默认为0，Mongo落地验证");
			
		}catch (Exception e){
			Logger.fail(e);
		}
	}
	
	/**
	  * 所有信息不变，进行修改,修改成功
	*/
	@Test
	@Category({P1.class})
	@TestCase
	public void Tc_AddProductBrand_002(){
		Logger.start(false,"，将品牌中文名改为库里已存在记录的品牌中文名，修改失败");
		try{
			//指定要修改的参数
			Map<String, Object> mm=new HashMap<String,Object>();
			mm.put("KeyWord", "Lgg");
			mm.put("BrandName", "阿迪达斯"+YMTDateUtil.getSysTime(dateformat));
			mm.put("BrandEnName", "Adidas"+YMTDateUtil.getSysTime(dateformat));
			mm.put("BrandDescription", "这是品牌描述信息"+YMTDateUtil.getSysTime(dateformat));
			mm.put("Operator", "Lgg");
			mm.put("BrandLogoUrl", "http://www.ymatou.com/BrandLogoUrl/"+YMTDateUtil.getSysTime(dateformat)+".jpg");		
			mm.put("BrandBannerUrl", "http://www.ymatou.com/BrandBannerUrl/"+YMTDateUtil.getSysTime(dateformat)+".jpg");	
			//添加一个品牌
			Integer ReturnBrandId=AddProductBrandCall.callAndGetBrandId(mm);
			//修改品牌
			Map<String, Object> mm2=new HashMap<String,Object>();
			mm2.put("BrandId", ReturnBrandId);
			mm2.put("KeyWord", mm.get("KeyWord"));
			mm2.put("BrandName", mm.get("BrandName"));
			mm2.put("BrandEnName", mm.get("BrandEnName"));
			mm2.put("BrandDescription", mm.get("BrandDescription"));
			mm2.put("Operator", mm.get("Operator"));
			mm2.put("BrandLogoUrl", mm.get("BrandLogoUrl"));	
			mm2.put("BrandBannerUrl", mm.get("BrandBannerUrl"));	
			ModifyProductBrandCall modifyProductBrandCall=new ModifyProductBrandCall();
			JSONObject ret=modifyProductBrandCall.callAndGetReturnData(mm2);
			//响应断言
			Logger.verifyEquals(200, ret.get("Code"), "返回值不为200");
			Logger.verifyEquals("操作成功", ret.get("Msg"), "响应信息返回值Msg不为：操作成功");
			
			//查询SQL数据
			YmtProductBrandWapper ymtProductBrandWapper=new YmtProductBrandWapper();
			List <Map>sqlRet= ymtProductBrandWapper.getProductBrandByBrandId(ReturnBrandId);
			Logger.verifyNotNull(sqlRet, "根据添加返回的品牌ID可以查询到品牌数据");	
			Logger.verifyEquals(mm2.get("KeyWord"), sqlRet.get(0).get("sKey"), "标准品牌关键字KeyWord，SQL落地验证 ");
			Logger.verifyEquals(mm2.get("BrandName"), sqlRet.get(0).get("sBrand"), "标准品牌中文名sBrand，SQL落地验证 ");
			Logger.verifyEquals(mm2.get("BrandEnName"), sqlRet.get(0).get("sBrandEn"), "标准品牌英文名BrandEnName，SQL落地验证 ");
			Logger.verifyEquals(mm2.get("BrandDescription"), sqlRet.get(0).get("mBrandDescript"), "标准品牌描述信息BrandDescription，SQL落地验证 ");
			Logger.verifyEquals(mm2.get("Operator"), sqlRet.get(0).get("sOperator"), "标准品牌操作人Operator，SQL落地验证 ");
			Logger.verifyEquals(mm2.get("BrandLogoUrl"), sqlRet.get(0).get("sLogoUrl"), "标准品牌品牌Logo图BrandLogoUrl，SQL落地验证 ");
			Logger.verifyEquals(mm2.get("BrandBannerUrl"), sqlRet.get(0).get("sBannerUrl"), "标准品牌品牌Logo图BrandBannerUrl，SQL落地验证 ");
			
			//查询Mongo数据落地
			ProductBrandInfoWapper productBrandInfoWapper=new ProductBrandInfoWapper();
			List <Map> mogRet=productBrandInfoWapper.getProductBrandInfoByBrandId(ReturnBrandId);
			Logger.verifyEquals(mm2.get("KeyWord"), (mogRet.get(0)).get("KeyWord"), "标准品牌关键字KeyWord，Mongo落地验证");
			Logger.verifyEquals(mm2.get("BrandName"), mogRet.get(0).get("BrandName"), "标准品牌中文名BrandName，Mongo落地验证");
			Logger.verifyEquals(mm2.get("BrandEnName"), mogRet.get(0).get("BrandEnName"), "标准品牌英文名BrandEnName，Mongo落地验证");
			Logger.verifyEquals(mm2.get("BrandDescription"), mogRet.get(0).get("BrandDescription"), "标准品牌描述信息BrandDescription，Mongo落地验证");
			Logger.verifyEquals(mm2.get("Operator"), mogRet.get(0).get("AddUser"), "标准品牌操作人Operator，Mongo落地验证");
			Logger.verifyEquals(mm2.get("BrandLogoUrl"), mogRet.get(0).get("BrandLogoUrl"), "标准品牌品牌Logo图BrandLogoUrl，Mongo落地验证");
			Logger.verifyEquals(mm2.get("BrandBannerUrl"), mogRet.get(0).get("BrandBannerUrl"), "标准品牌品牌Logo图BrandBannerUrl，Mongo落地验证");
			//非传入数据落地验证，默认值验证
			Logger.verifyEquals(0, mogRet.get(0).get("Action"), "标准品牌新增记录Aciton默认为0，Mongo落地验证");
		}catch (Exception e){
			Logger.fail(e);
		}
	}
	

	/**
	  * 将品牌中文名改为库里已存在记录的品牌中文名，修改失败
	*/
	@Test
	@Category({P1.class})
	@TestCase
	public void Tc_AddProductBrand_003(){
		Logger.start(false,"，将品牌中文名改为库里已存在记录的品牌中文名，修改失败");
		try{
			
		}catch (Exception e){
			Logger.fail(e);
		}
	}
	
	/**
	  * 将品牌中文名改为库里已存在记录的品牌英文名，修改失败
	*/
	@Test
	@Category({P1.class})
	@TestCase
	public void Tc_AddProductBrand_004(){
		Logger.start(false,"将品牌中文名改为库里已存在记录的品牌英文名，修改失败");
		try{
			
		}catch (Exception e){
			Logger.fail(e);
		}
	}
	
	
	/**
	  * 将品牌中文名改为库里已存在记录的品牌别名，修改失败
	*/
	@Test
	@Category({P1.class})
	@TestCase
	public void Tc_AddProductBrand_005(){
		Logger.start(false,"将品牌中文名改为库里已存在记录的品牌别名，修改失败");
		try{
			
		}catch (Exception e){
			Logger.fail(e);
		}
	}
	
	
	/**
	  *将品牌英文名改为库里已存在记录的品牌中文名，修改失败
	*/
	@Test
	@Category({P1.class})
	@TestCase
	public void Tc_AddProductBrand_007(){
		Logger.start(false,"将品牌英文名改为库里已存在记录的品牌中文名，修改失败");
		try{
			
		}catch (Exception e){
			Logger.fail(e);
		}
	}

	/**
	  * 将品牌英文名改为库里已存在记录的英文名，修改失败
	*/
	@Test
	@Category({P1.class})
	@TestCase
	public void Tc_AddProductBrand_008(){
		Logger.start(false,"将品牌英文名改为库里已存在记录的英文名，修改失败");
		try{
			
		}catch (Exception e){
			Logger.fail(e);
		}
	}
	
	
	
	/**
	  * 将品牌英文名改为库里已存在记录的别名，修改失败
	*/
	@Test
	@Category({P1.class})
	@TestCase
	public void Tc_AddProductBrand_009(){
		Logger.start(false,"将品牌英文名改为库里已存在记录的别名，修改失败");
		try{
			
		}catch (Exception e){
			Logger.fail(e);
		}
	}
	
	
	
	/**
	  * 将品牌英文名改为库里已存在记录的品牌中文名，修改失败
	*/
	@Test
	@Category({P1.class})
	@TestCase
	public void Tc_AddProductBrand_006(){
		Logger.start(false,"将品牌英文名改为库里已存在记录的品牌中文名，修改失败");
		try{
			
		}catch (Exception e){
			Logger.fail(e);
		}
	}
}
